function [posDetect,posAnot,FP, FN,Salida] = testTompkins2(ind_sen_1,ind_sen_2,Kwindow,long_der)
Salida = zeros(ind_sen_2 - ind_sen_1 + 1,7);
FP = 0;
FN = 0;

database = 'mitdb/';
signals =[100 101 102 103 104 105 106 107 108 109 111 112 113 114 115 116 117 118 119 121 122 123 124 200 201 202 203 205 207 208 209 210 212 213 214 215 217 219 220 221 222 223 228 230 231 232 233 234]; 
%signals =[100 101]; 

%Por cada señal a evaluar
%for itSenial=1:length(signals)
% for itSenial=30:30
for itSenial=ind_sen_1:1:ind_sen_2


    clear X
    clear anotX
    clear infoX
    clear posAnot    

    RETRASO_Total = 29;

    RECORD = strcat(database, num2str(signals(itSenial)));
    X = rdsamp(RECORD);
    anotX = rdann(RECORD, 'atr');
    infoX = wfdbdesc(RECORD,true);
    Fs=infoX.samplingFrequency;

    fprintf('%s',RECORD);

    j=1;
    [vectPicos, posDetect] =tompkins9(X(:,2), Fs,Kwindow,long_der,0);

    for i=1:length(anotX)
        %Pongo en el vector de picos todas las anotaciones que corresponden a
        %latidos. Descarto el resto de las anotaciones
       if(anotX(i).typeMnemonic == '�'|| anotX(i).typeMnemonic == 'N'||anotX(i).typeMnemonic == 'L'||anotX(i).typeMnemonic == 'R'||anotX(i).typeMnemonic == 'B'||anotX(i).typeMnemonic == 'A'||anotX(i).typeMnemonic == 'a'||anotX(i).typeMnemonic == 'J'||anotX(i).typeMnemonic == 'S'||anotX(i).typeMnemonic == 'V'||anotX(i).typeMnemonic == 'r'||anotX(i).typeMnemonic == 'F'||anotX(i).typeMnemonic == 'e'||anotX(i).typeMnemonic == 'j'||anotX(i).typeMnemonic == 'n'||anotX(i).typeMnemonic == 'E'||anotX(i).typeMnemonic == '/'||anotX(i).typeMnemonic == 'f'||anotX(i).typeMnemonic == 'Q'||anotX(i).typeMnemonic == '?')
            if (anotX(i).sampleNumber <= (length(X) - RETRASO_Total - long_der)) posAnot(j) = anotX(i).sampleNumber;  %-X(1:1);%
            end;
            j = j +1;
       end

    end

    tAprendizaje= 3.5;


    MARGEN_DETECCION=0.06*Fs;
    cantOk =0;
    cantDeteccionFalsa =0;
    cantNoDetect =0;
    cantDescartados=0;

    itDetect=1;
    itAnot=1;

    %{
    while posAnot(itAnot)/Fs < tAprendizaje
        itAnot = itAnot+1;
    end
    %}

    %Salteo el periodo de aprendizaje
    while posAnot(itAnot)< posDetect(1) - MARGEN_DETECCION
        if posAnot(itAnot)/Fs < tAprendizaje itAnot = itAnot+1;
        else break;
        end
    end

    cantDescartados = itAnot;
    k = 1;
    l = 1;
    while itAnot <= length(posAnot) && itDetect <= length(posDetect)
       if(abs(posAnot(itAnot) - posDetect( itDetect)) <= MARGEN_DETECCION)
          cantOk= cantOk +1;
          itAnot = itAnot +1;
          itDetect = itDetect +1;
       else
          if(posAnot(itAnot) < posDetect( itDetect))
              FN(k) = posAnot(itAnot);     
              k = k+1; 
              cantNoDetect = cantNoDetect +1;
              itAnot = itAnot +1;
          else
              FP(l) = posDetect(itDetect);
              l = l+1;
              cantDeteccionFalsa = cantDeteccionFalsa +1;
              itDetect = itDetect +1; 
          end   
       end 
    end


    %cantTotal_(itSenial) = cantDeteccionFalsa + cantNoDetect + cantOk;
    cantTotalTomp = length(posDetect);
    cantTotalTrunc = length(posAnot) - cantDescartados + 1;
    cantTotal = length(posAnot);
    PorcentajeOk = 100 * cantOk /cantTotalTrunc;
    %PorcentajeFalsoPos(itSenial) = 100 * cantDeteccionFalsa /cantTotalTrunc(itSenial);
    %PorcentajeFalsoNeg(itSenial) = 100 * cantNoDetect /cantTotalTrunc(itSenial);
    Errores = cantDeteccionFalsa + cantNoDetect;
    PorcentajeErrores = 100*Errores/cantTotalTrunc;

    Salida(itSenial,1) = signals(itSenial);
    Salida(itSenial,2) = cantTotalTrunc;
    Salida(itSenial,3) = cantDeteccionFalsa;
    Salida(itSenial,4) = cantNoDetect;
    Salida(itSenial,5) = Errores;
    Salida(itSenial,6) = PorcentajeErrores;
    Salida(itSenial,7) = length(X) - anotX(cantDescartados).sampleNumber;

    fprintf('------------------------------------------\n');

    %fprintf('Se�al: %i\n', signals(itSenial));

    %fprintf('La Cantidad total de detecciones fue: %i\n', cantTotalTomp);
    %fprintf('La Cantidad total de anotaciones truncadas fue: %i\n', cantTotalTrunc);
    %fprintf('La Cantidad total de anotaciones fue: %i\n', cantTotal);

    %fprintf('el QRS de las anotaciones luego del descarte es: %i\n', posAnot(cantDescartados));
    %fprintf('el primer QRS de las detecciones es: %i\n', posDetect(1));

    %fprintf('La Cantidad total de OK es: %i\n', cantOk);
    %fprintf('El porcentaje de OK es: %f\n', PorcentajeOk);

    %fprintf('Falsos positivos: %i\n', cantDeteccionFalsa);
    %fprintf('Falsos negativos: %i\n', cantNoDetect);
    %fprintf('La Cantidad total de errores es: %i\n', Errores);
    fprintf('El porcentaje total de errores es: %f\n', PorcentajeErrores);

    fprintf('------------------------------------------\n');


    clear cantDeteccionFalsa
    clear cantNoDetect
    clear cantDescartados
    clear cantOk

   end
Salida(itSenial + 1,1) = 0;
Salida(itSenial + 1,2) = sum(Salida(1:itSenial,2));
Salida(itSenial + 1,3) = sum(Salida(1:itSenial,3));
Salida(itSenial + 1,4) = sum(Salida(1:itSenial,4));
Salida(itSenial + 1,5) = sum(Salida(1:itSenial,5));
Salida(itSenial + 1,6) = (Salida(itSenial + 1,5)/Salida(itSenial + 1,2))*100;
Salida(itSenial + 1,7) = sum(Salida(1:itSenial,7));
end
